﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using LiquidacionComisionSOA.Dominio;
using NHibernate;
using System.Data.SqlClient;

namespace LiquidacionComisionSOA.Persistencia
{
    public class AgenteDAO : BaseDAO <Agente, String>
    {

        //El método busca un código de agente libre
        public String ObtenerId()
        {

            string identificador = string.Empty;
            string consulta = string.Empty;            
            consulta  = "SELECT  '" + Constantes.PREFIJO_AGENTE + "' + ";
            consulta += "REPLICATE('0',(8- LEN(CONVERT(VARCHAR, MAX(substring(Codigo," + (Constantes.PREFIJO_AGENTE.Length + 1) + ", LEN(Codigo))*1)+1 )) - " + (Constantes.PREFIJO_AGENTE.Length + 1) + ")) + CONVERT(VARCHAR, MAX(substring(Codigo," + (Constantes.PREFIJO_AGENTE.Length + 1) + ", LEN(Codigo))*1)+1 ) AS Codigo FROM [Liquidaciones].[dbo].[Agentes] ";

            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(consulta, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.HasRows)
                        {
                            while (resultado.Read())
                            {
                                identificador = (string)resultado["Codigo"];
                            }
                        }
                        
                    }
                }
            }
            return identificador;
        }

        //El método busca un agente que utiliza el correo indicado
        public Boolean ExisteAgenteCorreo(string correo)
        {
            int contador = 0;
            string consulta = string.Empty;
            consulta = "SELECT COUNT(1) AS contador FROM [Liquidaciones].[dbo].[Agentes] ";
            consulta += "WHERE Mail ='" + correo + "';";

            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(consulta, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.HasRows)
                        {
                            while (resultado.Read())
                            {
                                contador = (int)resultado["contador"];
                            }
                        }

                    }
                }
            }
            return (contador>0);
        }

        //El método busca un agente que utiliza el ruc indicado
        public Boolean ExisteAgenteRuc(string ruc)
        {
            int contador = 0;
            string consulta = string.Empty;
            consulta = "SELECT COUNT(1) AS contador FROM [Liquidaciones].[dbo].[Agentes] ";
            consulta += "WHERE Ruc ='" + ruc + "';";

            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(consulta, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.HasRows)
                        {
                            while (resultado.Read())
                            {
                                contador = (int)resultado["contador"];
                            }
                        }

                    }
                }
            }
            return (contador > 0);
        }

    }
}